﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DotNET4Study
{
    class ConvariantContravariantStudy2
    {
        /// <summary>
        /// 入口方法
        /// </summary>
        public static void Execute()
        {
            Student s = new Student();
            Person p = s;
            p.Init();
            Console.WriteLine(s.ClassName);
        }


        public void Foo<T>() where T:IIdentity
        {
            List<T> list = new List<T>();
            Person p = new Person();
           
            //1.这样通过IIdentity作为中介的父亲可以把T和Person进行间接转换
            IIdentity d = p;
            list.Add((T)d);

            //2.直接将Person类型的p交给应该出现T类型变量的地方，是不可以的
            //list.Add(p);
        }
    }
}
